The ability to perform sophisticated vector and scalar arithmetic operations in real time is an important aspect of computer systems. Often, however, this requirement is complicated by severe physical constraints upon the size, weight, power, and cooling of a specific computer system. Inherently, designers must compromise to achieve competing requirements. This compromise between different objectives (a computer's size/power or weight/heat ratios, for example) often results in processors with less than adequate performance. Since mathematical operations such as multiplication are essential in various and varied applications such as communications, cryptography, gaming, and digital video, the performance of a computer system is critical. Also, as mobile computing becomes more prevalent, issues such as circuit size and power consumption take on an even greater importance.
Multiplication algorithms vary, depending on the number system used. Numbers may be represented in many different ways. The simplest number systems may be unary numeral systems—such as tally marks—where the number of symbols represents the number. Sign-value notation systems, such as the Roman numeral system, use different symbols to represent different numbers; the value for each symbol is added, subtracted, or both, to determine the number represented. Positional systems, otherwise known as place-value notation, are more commonly used today.
Positional systems are based on a radix, or base, that is used to determine a value of a particular placement of a symbol. The numerical value of a position may be the radix taken to a power that is dependent on its position, or digit. Positional systems may include a radix point—the symbol “.” is commonly used in the United States—placed immediately to the right of the zeroth position, the position having the value of (radix) 0 or one. Typically, if no radix point is included, the rightmost symbol is assumed to be the zeroth position. The value of a position can be determined by counting the number of positions to the left of the zeroth position and taking the radix to that power. The number represented can then be determined by multiplying the value of the symbol and the value of the symbol's position, and then summing the products of each digit, or position.
Any number can be used as the base, or radix, for a system of numerical representation, although typically positive integers are used. For example, though the most common number system in use today, which is usually referred to as the Arabic or Hindu-Arabic number system, has a base of 10 and uses the commonly known symbols of “0123456789,” some ancient cultures such as the Babylonians and Sumerians used number systems with base 60 or base 12. Even today, digital computer systems commonly use a binary system with a base of 2 and computer scientists often use octal (base 8) or hexadecimal (base 16) number systems to re-encode numbers represented in binary into a more human-friendly form.